package com.sisgesbyte.services.ventas;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;
import com.sisgesbyte.common.ConstModAdministracion;
import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.dao.beanDao.ZonaRequest;
import com.sisgesbyte.dao.ventas.MantenimientoZonasDao;
import com.sisgesbyte.data.entity.comun.GenericEntity;
import com.sisgesbyte.data.entity.ventas.ZonaEntity;
import com.sisgesbyte.services.administracion.bean.ZonaBean;
import com.sisgesbyte.services.commonBean.GenericResponse;
import com.sisgesbyte.services.ventas.bean.ZonaListaResponse;

@Stateless
public class MantenimientoZonaImpl implements MantenimientoZona {

	@Inject
	private Validaciones validaciones;
	@EJB
	private MantenimientoZonasDao mantenimientoZonasDao;
	
	@Override
	public ZonaListaResponse listaZonas(String codTransaccion, FiltrosSQLBean cadenaFiltros) {
		String mensajeTransaccionMetodo = "[listaZonas idTx=" + codTransaccion + "] - ";
		ZonaListaResponse response = new ZonaListaResponse();
		
		try{
			 response.setIdTransaccion(codTransaccion);
			 List<ZonaEntity> resDao = null;
			try{
				resDao = mantenimientoZonasDao.listaZonas(cadenaFiltros);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al listar " +e);
				response.setCodigoRespuesta(ConstModAdministracion.MANT_LISTAR_COD_IDT);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_LISTAR_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
				return response;
			}
			
			if(resDao.size() > 0){
				List<ZonaBean> lista = new ArrayList<ZonaBean>();
				for(ZonaEntity row : resDao){
					ZonaBean bean = new ZonaBean();
						bean.setActive(row.getActive());
						bean.setCodigo(validaciones.validarCamposString(row.getCodigo()));
						bean.setDescripcion(validaciones.validarCamposString(row.getDescripcion()));
						bean.setId(row.getId());
						bean.setBanda_proyeccion(validaciones.validarCamposString(row.getBanda_proyeccion()));
						
					lista.add(bean);
				}
				response.setListaZonas(lista);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstModAdministracion.MANT_LISTAR_COD_IDF);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_LISTAR_MSJ_IDF.replace("msj", mensajeTransaccionMetodo));
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso" +e);
			response.setCodigoRespuesta(ConstModAdministracion.MANT_LISTAR_COD_IDT);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_LISTAR_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse nuevaZona(String codTransaccion, ZonaBean zona) {
		String mensajeTransaccionMetodo = "[nuevaZona idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			GenericEntity resDao = null; 
			ZonaRequest  newItem = new ZonaRequest ();
				newItem.setActive(zona.getActive());
				newItem.setCodigo(validaciones.validarCamposString(zona.getCodigo()));
				newItem.setDescripcion(validaciones.validarCamposString(zona.getDescripcion()));
			
			try{
				resDao = mantenimientoZonasDao.guardarZona(newItem);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al registrar el AccesoHost en BD "+e );
				response.setCodigoRespuesta(ConstModAdministracion.MANT_NUEVO_COD_IDT);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_NUEVO_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
				return response;
			}
			
			if(resDao.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstModAdministracion.MANT_NUEVO_COD_IDF);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_NUEVO_MSJ_IDF.replace("msj", mensajeTransaccionMetodo));
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " +e);
			response.setCodigoRespuesta(ConstModAdministracion.MANT_NUEVO_COD_IDT);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_NUEVO_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
			return response;
		}
		return response;
	}

	@Override
	public GenericResponse editZona(String codTransaccion, ZonaBean zona) {
		String mensajeTransaccionMetodo = "[editZona idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			GenericEntity resDao = null; 
			ZonaRequest editItem = new ZonaRequest();
				editItem.setActive(zona.getActive());
				editItem.setCodigo(validaciones.validarCamposString(zona.getCodigo()));
				editItem.setDescripcion(validaciones.validarCamposString(zona.getDescripcion()));
				editItem.setId(zona.getId());
			
			try{
				resDao = mantenimientoZonasDao.actualizarZona(editItem);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al editar  en BD "+e );
				response.setCodigoRespuesta(ConstModAdministracion.MANT_EDITAR_COD_IDT);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_EDITAR_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
				return response;
			}
			
			if(resDao.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstModAdministracion.MANT_EDITAR_COD_IDF);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_EDITAR_MSJ_IDF.replace("msj", mensajeTransaccionMetodo));
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " +e);
			response.setCodigoRespuesta(ConstModAdministracion.MANT_EDITAR_COD_IDT);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_EDITAR_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
			return response;
		}
		
		return response;
	}

	@Override
	public GenericResponse deleteZona(String codTransaccion, int codZona) {
		String mensajeTransaccionMetodo = "[deleteZona idTx=" + codTransaccion + "] - ";
		GenericResponse response = new GenericResponse();
		try{
			
			GenericEntity resDao = mantenimientoZonasDao.eliminarZona(codZona);
			
			if(resDao.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstModAdministracion.MANT_ELIMINAR_COD_IDF);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_ELIMINAR_MSJ_IDF.replace("msj", mensajeTransaccionMetodo));
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error al eliminar  en BD " +e);
			response.setCodigoRespuesta(ConstModAdministracion.MANT_EDITAR_COD_IDT);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_EDITAR_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
		}
		
		return response;
	}
}
